package com.huang.jedis;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.Transaction;

import java.util.List;
import java.util.Set;

/**
 * @Author: huanghwh
 * @Date: 2021/12/4 上午10:45
 * Jedis事务
 */
public class JedisTransaction {

    public static void main(String[] args) {

        // new Jedis 对象，设置连接信息
        Jedis jedis = new Jedis("127.0.0.1", 6379);

        // 开启事务
        Transaction multi = jedis.multi();

        try {
            multi.set("user1", "value1");
            multi.set("user2", "value2");
            int i = 1 / 0; // 这步java代码异常
            multi.exec(); // 因为这里才提交redis事务，上一步抛了异常，所以无法执行到这里，未提交则上面的指令都不会执行
        } catch (Exception e) {
            multi.discard(); //放弃事务
            e.printStackTrace();
        } finally {
            System.out.println(jedis.get("user1"));
            System.out.println(jedis.get("user2"));
        }

        try {
            multi.set("user1", "value1");
            multi.set("user2", "value2");
            multi.exec(); // 已经提交了事务，后面异常也不会回滚
            int i = 1 / 0; // 这步java代码异常
        } catch (Exception e) {
            multi.discard(); //放弃事务
            e.printStackTrace();
        } finally {
            System.out.println(jedis.get("user1"));
            System.out.println(jedis.get("user2"));
            jedis.del("user1");
            jedis.del("user2");
            jedis.close();
        }

    }

}
